package org.jeecg.modules.activiti.service;


import com.baomidou.mybatisplus.extension.service.IService;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.jeecg.modules.activiti.entity.ActBusiness;
import org.jeecg.modules.activiti.entity.ActZTask;

import java.util.Map;

/**
 * @Description: 待办任务扩展表
 * @Author: qixin-boot
 * @Date:   2022-02-08
 * @Version: V1.0
 */
public interface IActZTaskService extends IService<ActZTask> {

    /**
     * 修改待办任务状态
     * @param id
     * @param state 流程状态
     * @param nodeState 节点状态：0未处理1已处理
     */
    void updateState(String id, Integer state, Integer nodeState, String comment);

    /**
     * 流程撤回/收回
     * @param procInstId 流程实例id
     * @param taskId 当前已办任务Id
     * @param actZTaskId 待办任务表Id -- 用来更新已办状态
     * @param isStarter 是否为发起人
     * @param actBusiness 流程业务扩展表
     * @return true 表示成功
     */
    Boolean withdraw(String procInstId, String taskId, String actZTaskId, Boolean isStarter,
                     Integer serial, ActBusiness actBusiness);

    /**
     * 根据procInstId更新ActZTask表状态
     * @param state
     * @param procInstId
     */
    void updateActZTaskState(Integer state, String procInstId);

    /**
    * @Description: TODO
    * @author: CYS
    * @date: 2022/3/1 10:35
    * @param tableId:
    * @Return:
    */
    ActZTask getActZTaskByTableId(String tableId)throws Exception;

    /**
     * @Description: 添加运行时流程执行实例表记录
     * @author: wmf
     * @date: 2022/3/31 15:48
     * @param actRuExecution
     */
    void insertActRuExecution(Map<String, Object> actRuExecution);


    /**
     * @Descripton：删除历史已办任务 
     * @author wmf 
     * @date 2022/3/31 21:38
     * @param taskId
     */
    void deleteHiTask(String taskId);

    /**
     * @Descripton：将历史流程实例表的endTime设为空值 
     * @author wmf 
     * @date 2022/3/31 21:48
     * @param procInstId
     */
    void updateActHiProcInstEndtime(String procInstId);

    /**
     * @Descripton：删除待办任务表最后一个节点审批记录 
     * @author wmf 
     * @date 2022/3/31 22:34
     * @param procInstId
     * @param taskId
     */
    void delActZTaskByTaskIdProcInstId(String procInstId, String taskId);

    /**
     * @Description: 根据id查询历史参与人表
     * @author: CYS
     * @date: 2022/4/1 18:17
     * @param procInstId:
     * @param taskId:
     * @Return: java.util.Map<java.lang.String,java.lang.Object>
     */
    String getActHiIdentitylinkById(String procInstId, String taskId);
}
